package com.xunyji.xunyjitest.demo.baidutrans;

import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;

/**
 * @author AltEnter
 * @create 2019-01-10 20:56
 * @desc 百度翻译API封装
 **/
@Slf4j
public class TransApi {
    private static final String TRANS_API_HOST = "http://api.fanyi.baidu.com/api/trans/vip/translate";

    /** 百度翻译开发者appid */
    private String appid;
    /** 百度翻译开发者密钥 */
    private String securityKey;

    public TransApi(String appid, String securityKey) {
        this.appid = appid;
        this.securityKey = securityKey;
    }

    /**
     * 翻译API封装方法
     * @param query 需要进行翻译的内容
     * @param from 源语言
     * @param to 目标语言
     * @return
     */
    public String getTransResult(String query, String from, String to) {
        Map<String, String> params = buildParams(query, from, to);
        return HttpGet.get(TRANS_API_HOST, params);
    }

    /**
     * 百度翻译API所需请求参数封装
     * @param query 需要进行翻译的内容
     * @param from 源语言
     * @param to 目标语言
     * @return
     */
    private Map<String, String> buildParams(String query, String from, String to) {
        Map<String, String> params = new HashMap<String, String>();
        params.put("q", query);
        params.put("from", from);
        params.put("to", to);
        params.put("appid", appid);

        // 随机数生成
        String salt = String.valueOf(System.currentTimeMillis());
        params.put("salt", salt);

        // 签名拼接并加密操作
        String src = appid + query + salt + securityKey; // 加密前的原文
        params.put("sign", MD5.md5(src));

        return params;
    }

}

